import java.util.ArrayList;
import java.util.List;

/**
 * 抽象通知者
 * @author liaosh
 * @date 2022-10-16 19:33
 */
public abstract class Subject {

    /**
     * 观察者列表，即被通知的对象
     */
    List<Observer> observers = new ArrayList<>();

    /**
     * 被观察者的状态
     */
    private String subjectState = null;

    /**
     * 添加观察者
     * @param observer
     */
    abstract void attach(Observer observer);

    /**
     * 移除观察者
     * @param observer
     */
    abstract void detach(Observer observer);

    /**
     * 通知观察者
     */
    abstract void notifyObserver();

    public String getSubjectState() {
        return subjectState;
    }

    public void setSubjectState(String subjectState) {
        this.subjectState = subjectState;
    }
}
